﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ParasitoLibrary.Core.Entidade;
using System.Xml.Linq;
using System.IO;

namespace ParasitoLibrary.DataAccess
{
    public partial class DAOQuestoes : DAOEntidadeParasitoAbstrata<Questoes>
    {
        public const string DIRETORIO_ARQUIVO_QUESTAO = @"perguntas\";
        public const string CAMINHO_ARQUIVO_QUESTAO = DIRETORIO_ARQUIVO_QUESTAO + "perguntas.xml";

        public override Questoes criarEntidade(XElement xElement)
        {
            Questoes questoes = new Questoes(xElement);
            return questoes;
        }

        public override String getDiretorioArquivosXML()
        {
            return DIRETORIO_ARQUIVO_QUESTAO;
        }

        public override String getCaminhoArquivoXML()
        {
            return CAMINHO_ARQUIVO_QUESTAO;
        }

        public void exportarQuestoes(string arquivoQuestoes)
        {
            IList<Questao> listaQuestao = DAOQuestao.getInstancia().carregarEntidades();
            Questoes questoes = new Questoes();

            questoes.ListaQuestao = listaQuestao;

            XDeclaration declaracao = new XDeclaration("1.0", "iso-8859-1", "yes");
            XDocument documento = new XDocument(declaracao, questoes.toElementoXml());

            documento.Save(@arquivoQuestoes);
        }

        public void importarQuestoes(string arquivoQuestoes)
        {
            IList<Questoes> listaQuestoes = this.carregarEntidades(@arquivoQuestoes);
            Questoes questoes = null;

            if (listaQuestoes != null && listaQuestoes.Count > 0)
            {
                questoes = listaQuestoes[0];

                foreach(Questao questao in questoes.ListaQuestao)
                {
                    DAOQuestao.getInstancia().inserir(questao);
                }
            }            
        }

        public Questoes carregarQuestoes()
        {
            Questoes questoes = null;
            IList<Questoes> listaQuestoes = this.carregarEntidades();

            if (listaQuestoes != null && listaQuestoes.Count > 0)
            {
                questoes = listaQuestoes.ElementAt(0);
            }

            return questoes;
        }
    }
}
